/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.edu.upc.dew.discoteca.service;

import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import pe.edu.upc.dew.discoteca.dao.DiscotecaDAO;
import pe.edu.upc.dew.discoteca.model.Contacto;
import pe.edu.upc.dew.discoteca.model.Discoteca;
import pe.edu.upc.dew.discoteca.model.Lista;

/**
 *
 * @author elvis
 */
@Service
public class DiscotecaServiceImpl implements DiscotecaService {

   private static final Logger logger = Logger.getLogger(DiscotecaServiceImpl.class);

    @Autowired
    private DiscotecaDAO discotecaDAO;

    @Override
    public List<Discoteca> listarDiscotecas() {
        return discotecaDAO.listarDiscotecas();
    }
    @Override
    public void registrar(Discoteca discoteca) {
        discotecaDAO.registrar(discoteca);
    }
    @Override
    public void modificar(Discoteca discoteca) {
        discotecaDAO.modificar(discoteca);
    }

    public Discoteca buscarDiscoteca(int codigo) {
        return discotecaDAO.buscarDiscoteca(codigo);
    }

    public Discoteca buscarDiscotecaN(String codigo) {
    return discotecaDAO.buscarDiscotecaN(codigo);
    }

    @Transactional(propagation=Propagation.REQUIRES_NEW)
    public void registraLista(Lista lista) {
        discotecaDAO.registraLista(lista);
        logger.debug(lista.getCodigo());
        for(Contacto contacto : lista.getContactoList()){
            contacto.setCodigoLista(lista);
            discotecaDAO.registrarContacto(contacto);
        }
    }

    public Lista obtenerLista(String codigo) {
        return discotecaDAO.obtenerLista(codigo);
    }

    public List<Contacto> listarContactos(String codigoLista) {
        return discotecaDAO.listarContactos(codigoLista);
    }

   public List<Lista> listaReservas(String discoteca, String fecha) {
      return discotecaDAO.listaReservas(discoteca,fecha);
   }


}
